package num02;

import java.io.UnsupportedEncodingException;
import java.util.*;

public class ZiMuYiWei01 {
    /**
     * 主要思路就是时字母异位词的话，那么对应的拆解出来的字符数组排序后一定是相同的，将有序的字符数组组合成字符串作为键存在map中
     * 例子： eat -》{e ，a，t} -》 排序后{a，e，t} -》组合 -》 aet--作为map中的键
     * @param strs
     * @return
     * @throws UnsupportedEncodingException
     */
    public List<List<String>> groupAnagrams(String[] strs) throws UnsupportedEncodingException {
        Map<String, List<String>> map = new HashMap<String, List<String>>();
        for (String str : strs) {
            char[] array = str.toCharArray();
            Arrays.sort(array);
            String key = new String(array);
            //如果键不存在则创建一个新的集合
            List<String> list = map.getOrDefault(key, new ArrayList<String>());
            list.add(str);
            map.put(key, list);
        }
        return new ArrayList<List<String>>(map.values());
    }

    public static void main(String[] args) throws UnsupportedEncodingException {
        ZiMuYiWei01 ziMuYiWei01 = new ZiMuYiWei01();
        String[] strings = {"eat", "tea", "tan", "ate", "nat", "bat"};
        List<List<String>> lists = ziMuYiWei01.groupAnagrams(strings);
        System.out.println(lists);
    }



    }



